package F.树;

import java.util.LinkedList;
import java.util.Queue;

public class _100_相同的树 {

    /**
     * 和对称二叉树差不多
     * 自解：递归法：左右指针均空 为真 分别一起左移 右移
     * @param p
     * @param q
     * @return
     */
    public boolean isSameTree(TreeNode p, TreeNode q) {

        if (p == null && q == null){
            return true;
        }

        //不能把值相等的判断写在这！万一 p｜q是空的 后面就空指针了
        if (p == null || q == null ){
            return false;
        }

        return  p.val != q.val && isSameTree(p.left,q.left) && isSameTree(p.right,q.right) ;

    }
    /**
     * 迭代：超时拉！！
     */

    public boolean isSameTree1(TreeNode p, TreeNode q) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(p);
        queue.add(q);
        while (queue!= null){
            p = queue.poll();
            q = queue.poll();

            if (p == null && q==null){
                continue;
            }
            if (p == null || q==null){
                return false;
            }
            if (p.val != q.val){
                return false;
            }

            queue.add(p.left);
            queue.add(p.left);

            queue.add(p.right);
            queue.add(p.right);
        }

        return true;

    }
}
